로딩 중이에요... 🐣
[코담]
웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트
03 Django 기초 개념 및 애플리케이션 생성 | ✅ 편저: 코담 운영자
Django 튜토리얼 #3 - Django 기초 개념 및 애플리케이션 생성
🔗 소스
1. 프로젝트 개요 및 목표
- 새로운 프로젝트
WorldTour
를 생성하고 그 안에 애플리케이션asiatoursagency
를 만들어 동작 테스트를 진행함 - 주요 목표: HTML 문자열 응답 반환을 통한 기본 구조 이해
2. 가상환경 진입 및 Django 설치
pipenv shell
pipenv install django
- Pipfile과 Pipfile.lock이 자동 생성됨
- 가상환경 내에서만 Django가 설치되어, 글로벌 환경에 영향을 주지 않음
3. Django 프로젝트 생성
django-admin startproject worldtour
cd worldtour
4. Django 앱 생성
python manage.py startapp asiatoursagency
- 애플리케이션 단위로 기능을 나누어 구성 가능 (예: asiatoursagency, europetours 등)
5. 애플리케이션 구성 파일 설명
__init__.py
: Python 패키지임을 나타냄 (비어 있어도 무방)admin.py
: 모델을 Django 관리자 페이지에 등록apps.py
: 애플리케이션 구성 클래스 설정- 예:
AsiaToursAgencyConfig
- 예:
models.py
: 데이터베이스 모델 정의 (클래스 = 테이블, 필드 = 컬럼)tests.py
: 유닛 테스트 작성views.py
: 요청 처리 함수(또는 클래스)를 정의 (예: index)migrations/
: 모델 변경 이력을 담는 마이그레이션 파일 저장 폴더
6. settings.py에 앱 등록
# 방법 1: 문자열로 등록
INSTALLED_APPS = [
...
'asiatoursagency',
]
# 방법 2: 구성 클래스 경로로 등록
INSTALLED_APPS = [
...
'asiatoursagency.apps.AsiaToursAgencyConfig',
]
- 2번 방식 권장: 더 명확하고 향후 앱 구성이 복잡해질 때 유리함
7. views.py 작성
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Asia Tours Agency")
HttpResponse
를 사용해 문자열을 반환하는 기본 View 함수 정의- 현재는 단순 텍스트를 반환하지만, 이후 HTML 템플릿으로 대체될 예정
8. 앱 내부에 urls.py 생성
from django.urls import path
from . import views
# Define a list of url patterns
urlpatterns = [
path('', views.index)
]
- 앱 내부에서 view(index)와 연결된 URL 경로를 정의함
- 빈 문자열
''
은 루트 경로 (/)를 의미하며, 해당 요청이 들어오면 views.index를 실행
9. 프로젝트 urls.py에 앱의 URL 연결
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('asiatoursagency.urls')),
]
include()
함수는 앱의 urls.py를 메인 url 설정에 연결하는 역할- 루트 경로에 접속 시
asiatoursagency.urls
의 URL 설정이 동작함 include
함수는 상단에from django.urls import include
로 반드시 import 해야 함
10. 개발 서버 실행 및 결과 확인
python manage.py runserver
- 브라우저에서
http://127.0.0.1:8000
접속 시 “Asia Tours Agency”라는 텍스트가 출력됨
💡 현재는 문자열이 그대로 출력되며 HTML 구조는 갖추지 않음. 추후
templates/index.html
을 구성하여 페이지 렌더링 예정
디렉터리 구조 확인 (실제 기준)
lesson3-DjangoApp/
├── worldtour/
│ ├── asiatoursagency/
│ │ ├── migrations/
│ │ ├── __init__.py
│ │ ├── admin.py
│ │ ├── apps.py
│ │ ├── models.py
│ │ ├── tests.py
│ │ ├── urls.py
│ │ └── views.py
│ ├── worldtour/
│ │ ├── __init__.py
│ │ ├── asgi.py
│ │ ├── settings.py
│ │ ├── urls.py
│ │ └── wsgi.py
│ ├── db.sqlite3
│ ├── manage.py
├── Pipfile
├── Pipfile.lock
다음 강의 예고
- 마이그레이션과 데이터베이스 연동, 모델 정의 및 admin 등록 진행 예정